Безопасное хранилище данных
SharedPreferences: Простое хранилище для настроек и некритичных данных в формате "ключ-значение".SQLite: Мощная реляционная база данных для хранения больших объемов структурированных данных.
Но что, если нужно сохранить данные, которые требуют максимального уровня безопасности? Например, токен авторизации (JWT), пароли, API-ключи или биометрические данные. Хранить их в SharedPreferences или незашифрованной базе SQLite небезопасно.
Именно для таких случаев и существует FlutterSecureStorage.
FlutterSecureStorage
Это плагин, который предоставляет защищенное, зашифрованное хранилище для данных. Он использует нативные, надёжные системные механизмы.
- На iOS: Keychain Services. Это централизованное и защищенное хранилище для паролей, ключей и сертификатов.
- На Android: Keystore System. Позволяет хранить криптографические ключи в специальном контейнере, защищая их от извлечения.
Таким образом, данные, которые вы сохраняете, шифруются на уровне операционной системы, что обеспечивает высокий уровень защиты.
Установка зависимостей
flutter pub add flutter_secure_storage
Например, сделаем примерную реализацию сервиса по хранению API ключа
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
class SecureApiKeyService {
// Создаем экземпляр хранилища
final _storage = const FlutterSecureStorage();
// Определяем ключ, под которым будем хранить наш API-ключ
static const _apiKeyStorageKey = 'api_key';
Future<void> saveApiKey(String apiKey) async {
// Используем метод write для сохранения
await _storage.write(key: _apiKeyStorageKey, value: apiKey);
}
Future<String?> getApiKey() async {
// Используем метод read для чтения
return await _storage.read(key: _apiKeyStorageKey);
}
Future<void> deleteApiKey() async {
// Используем метод delete для удаления
await _storage.delete(key: _apiKeyStorageKey);
}
}
FlutterSecureStorage по принципу работы схож с SharedPreferences основанный на ключах и значениях. Использовать его очень просто, методы read и write.
